From 169b990abcdb94605877ef0f5d53024094991d2f Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Tue, 24 Apr 2007 22:35:16 +0100 Subject: [PATCH] LINUX: Fixes for XENFEAT_supervisor_mode_kernel and XENFEAT_writable_page_tables. Signed-of-by: Ian Campbell --- linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S | 4 ++-- .../include/asm-x86_64/mach-xen/asm/mmu_context.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S index 4dbd7a7b0f..cc9694522f 100644 --- a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S @@ -160,8 +160,8 @@ NMI_MASK = 0x80000000 testl $NMI_MASK,2*8(%rsp) jnz 2f - testb $1,(xen_features+XENFEAT_supervisor_mode_kernel) - jnz 1f + cmp $0x00,(xen_features+XENFEAT_supervisor_mode_kernel)(%rip) + jne 1f /* Direct iret to kernel space. Correct CS and SS. */ orl $3,1*8(%rsp) diff --git a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu_context.h b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu_context.h index b6afab469f..e0a03bf3a7 100644 --- a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu_context.h +++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/mmu_context.h @@ -72,7 +72,8 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct mmuext_op _op[3], *op = _op; if (likely(prev != next)) { - BUG_ON(!next->context.pinned); + BUG_ON(!xen_feature(XENFEAT_writable_page_tables) && + !next->context.pinned); /* stop flush ipis for the previous mm */ cpu_clear(cpu, prev->cpu_vm_mask); -- 2.30.2